/*
 * 问题描述：在战争中城市间的相互连接很重要。如果一个城市被攻占那么所有和它相连的公路将均被关闭，我们必须知道还需修建几条另外的公路来保证剩
 *          城市相互连接
 *
 * 输入：N 城市的总数
 *      M 剩余的公路数
 *      K 关注的城市数目
 *      M行 路
 *      K个 关注的城市
 *
 * 输出：
 *      对于每个关注的城市输出需要修建的公路数目
 *
 * 思路：
 *      通过DFS算法的调用次数来统计剩余城市的联通分量的个数，那么需要修建的道路的个数就是联通分量数目-1
 */

#include <iostream>
using namespace std;
int **graph;

int **create2DArr(int row, int col, int init){
    int **arr = new int *[row]();
    for(int i=0; i<row; i++){
        arr[i] = new int[col]();
        for(int j=0; j<col; j++){
            arr[i][j] = init;
        }
    }
    return arr;
}

int *create1DArr(int col, int init){
    int *arr = new int[col]();
    for(int i=0; i<col; i++){
        arr[i] = init;
    }
    return arr;
}

int **copy2DArr(int row, int col, int **source){
    int **arr = new int *[row]();
    for(int i=0; i<row; i++){
        arr[i] = new int[col]();
        for(int j=0; j<col; j++){
            arr[i][j] = source[i][j];
        }
    }
    return arr;
}

void dfs(int **map, int *record, int total, int current){
    record[current] = 0;
    for(int i=0; i<total; i++){
        if (record[i] == 1 && map[current][i] == 1) {
            dfs(map, record, total, i);
        }
    }
}

int isFinish(int *record, int total){
    for(int i=0; i<total; i++){
        if(record[i] == 1){
            return i;
        }
    }
    return -1;
}

/*
 * @param map 连接图
 * @param total 城市总数
 * @param cityNum 被攻占的城市编号
 */
int compute(int **map, int total, int cityNum){
    for(int i=0; i<total; i++){
        map[cityNum][i] = map[i][cityNum] = 0;
    }
    int *record = create1DArr(total, 1);
    //忘记将被攻占的城市排除
    record[cityNum] = 0;
    int current = 0;
    int cnt = 0;
    while ((current = isFinish(record, total)) != -1) {
        cnt++;
        dfs(map, record, total, current);
    }
    return cnt - 1;
}
int main() {
    int N,M,K;
    cin >> N >> M >> K;
    graph = create2DArr(N, N, 0);
    int i,j;
    while(M--){
        cin >> i >> j;
        graph[i-1][j-1] = graph[j-1][i-1] = 1;
    }
    int cityNum = 0;
    while(K--){
        cin >> cityNum;
        int **tmpGraph = copy2DArr(N, N, graph);
        cout << compute(tmpGraph, N, cityNum-1) << endl;
    }
    return 0;
}